#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
欧意（OKX）K线图启动脚本
"""

import os
import sys
import asyncio
import argparse

# 导入K线图类
from okx_kline_chart import OKXKlineChart
from okx_mplfinance_chart import OKXMplfinanceChart

def parse_arguments():
    """解析命令行参数"""
    parser = argparse.ArgumentParser(description='欧意（OKX）K线图显示工具')
    
    # 基本参数
    parser.add_argument('--symbol', type=str, default='BTC-USDT',
                        help='交易对基础部分，如 BTC-USDT, ETH-USDT')
    parser.add_argument('--interval', type=str, default='1m',
                        help='K线周期，如 1m, 5m, 15m, 1H, 4H, 1D')
    parser.add_argument('--limit', type=int, default=100,
                        help='历史K线数量，默认100')
    
    # 合约类型
    parser.add_argument('--contract', type=str, choices=['spot', 'swap', 'futures'], default='swap',
                        help='合约类型: spot(现货), swap(永续合约), futures(交割合约)，默认swap')
    
    # 代理设置
    parser.add_argument('--proxy', type=str, default='http://localhost:10809',
                        help='代理URL，默认http://localhost:10809')
    parser.add_argument('--no-proxy', action='store_true',
                        help='不使用代理')
    
    # 图表类型
    parser.add_argument('--type', type=str, choices=['basic', 'mplfinance'], default='mplfinance',
                        help='图表类型: basic(基础图表) 或 mplfinance(高级图表)，默认mplfinance')
    
    return parser.parse_args()

async def main():
    """主函数"""
    # 解析命令行参数
    args = parse_arguments()
    
    # 设置代理
    proxy = None if args.no_proxy else args.proxy
    
    # 根据合约类型构建完整交易对
    full_symbol = args.symbol
    if args.contract == 'swap':
        full_symbol = f"{args.symbol}-SWAP"
    elif args.contract == 'futures':
        # 这里可以根据需要添加具体的交割合约后缀，如季度合约
        full_symbol = f"{args.symbol}-FUTURES"
    
    print(f"使用交易对: {full_symbol}")
    
    # 创建K线图对象
    if args.type == 'basic':
        # 使用基础K线图
        kline_chart = OKXKlineChart(
            symbol=full_symbol,
            interval=args.interval,
            limit=args.limit,
            proxy=proxy
        )
    else:
        # 使用高级K线图
        kline_chart = OKXMplfinanceChart(
            symbol=full_symbol,
            interval=args.interval,
            limit=args.limit,
            proxy=proxy
        )
    
    # 运行K线图显示
    try:
        print(f"启动 {full_symbol} {args.interval} K线图...")
        await kline_chart.run()
    except KeyboardInterrupt:
        print("\n程序被用户中断")
    except Exception as e:
        print(f"运行K线图时出错: {e}")

if __name__ == "__main__":
    try:
        asyncio.run(main())
    except Exception as e:
        print(f"程序执行异常: {e}") 